package com.pur.zsms.matermanage.mater.service;

import java.math.BigDecimal;
import java.util.List;

import com.pur.zsms.common.exception.GenericException;
import com.pur.zsms.common.support.PageController;
import com.pur.zsms.common.support.PaginationSupport;
import com.pur.zsms.foodmanage.food.vo.FoodVo;
import com.pur.zsms.matermanage.mater.po.MaterLevelPo;
import com.pur.zsms.matermanage.mater.po.MaterPo;
import com.pur.zsms.matermanage.mater.po.MaterTypePo;
import com.pur.zsms.matermanage.mater.po.ShoppingCartMaterPo;
import com.pur.zsms.matermanage.mater.vo.MaterTypeVo;
import com.pur.zsms.matermanage.mater.vo.MaterValueVo;
import com.pur.zsms.matermanage.mater.vo.MaterVo;
import com.pur.zsms.matermanage.mater.vo.MaterVoForSup;
import com.pur.zsms.matermanage.mater.vo.MaterVoForUnit;
import com.pur.zsms.matermanage.mater.vo.ShoppingCartMaterSupplierVo;
import com.pur.zsms.matermanage.mater.vo.ShoppingCartMaterVo;
import com.pur.zsms.pmsnmanage.menu.po.MenuPo;
import com.pur.zsms.pmsnmanage.role.vo.RoleVo;
import com.pur.zsms.pmsnmanage.user.po.UserPo;
import com.pur.zsms.pmsnmanage.user.vo.UserVo;

public interface IMaterService {

	String msg = "";

	public String getMsg();

	public void setMsg(String msg);

	/**
	 * 查询菜品
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listMater(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport listMaterUnit(PageController pageController, MaterVoForUnit materVo) throws GenericException;

	public PaginationSupport lookMaterUnit(PageController pageController, MaterVoForUnit materVo) throws GenericException;

	public PaginationSupport listMaterForSup(PageController pageController, MaterVoForSup materVo) throws GenericException;

	
	/**
	 * 查询菜品价格
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport lookMaterValue(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport lookMaterValueCost(PageController pageController, MaterVo materVo) throws GenericException;

	/**
	 * 新增和修改 菜品页面 中查询材料
	 * 
	 * @param
	 * @return
	 */
	public PaginationSupport listEditorMater(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport listSelectMater(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport findMaterTypeForSup(PageController pageController, MaterTypeVo vo) throws GenericException;

	public List<Object[]> listSelectMaterForMobile(MaterVo materVo) throws GenericException;

	public List<Object[]> initShoppingMaterForMobile(MaterVo materVo) throws GenericException;

	public List<Object[]> listSelectMaterTypeForMobile(MaterTypeVo c) throws GenericException;

	public PaginationSupport listSelectMaterForBuySupplier(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport listSelectMaterSelf(PageController pageController, MaterVo materVo) throws GenericException;

	public PaginationSupport findShoppingCartMater(PageController pageController, ShoppingCartMaterVo shoppingCartMaterVo) throws GenericException;

	public PaginationSupport findShoppingCartMaterSupplier(PageController pageController, ShoppingCartMaterVo shoppingCartMaterVo)
			throws GenericException;

	public PaginationSupport findShoppingCartMaterSelf(PageController pageController, ShoppingCartMaterVo shoppingCartMaterVo)
			throws GenericException;

	public boolean addMater(MaterVo c) throws GenericException;

	public boolean addMaterTypePo(MaterTypeVo c) throws GenericException;

	public boolean updateMaterTypePo(MaterTypeVo c) throws GenericException;

	public void addMaterLevel(MaterLevelPo c) throws GenericException;

	public boolean addMaterUnit(MaterVoForUnit c) throws GenericException;

	public boolean addCheckMaterCost(MaterVoForSup c) throws GenericException;

	public boolean bindingMaterSupOne(MaterVoForSup c) throws GenericException;

	public boolean bindingMaterSupBatch(MaterVoForSup c) throws GenericException;

	public boolean addShoppingCart(ShoppingCartMaterVo c) throws GenericException;

	public boolean addShoppingCartForInput(ShoppingCartMaterVo c) throws GenericException;

	public boolean addShoppingCartForAdd(ShoppingCartMaterVo c) throws GenericException;

	public boolean addShoppingCartForMin(ShoppingCartMaterVo c) throws GenericException;

	public int getShopCartNumForShop(ShoppingCartMaterVo c) throws GenericException;

	public boolean addShoppingCartForMobileInput(ShoppingCartMaterVo c) throws GenericException;

	public boolean addShoppingCartSup(ShoppingCartMaterSupplierVo c) throws GenericException;

	public boolean addShoppingCartSelf(ShoppingCartMaterVo c) throws GenericException;

	public boolean deleteShoppingCartOne(ShoppingCartMaterVo c) throws GenericException;

	public boolean deleteShoppingCartOneSelf(ShoppingCartMaterVo c) throws GenericException;

	public boolean deleteShoppingCartSup(ShoppingCartMaterVo c) throws GenericException;

	public boolean deleteShoppingCartSupAll(int c) throws GenericException;

	public boolean deleteShoppingCartForCust(long custId) throws GenericException;

	public boolean deleteShoppingCartForCustSelf(long custId) throws GenericException;

	public String updateMater(MaterVo c) throws GenericException;

	public void deleteMater(int materId, int materLevel, int supId) throws GenericException;

	public void deleteMaterUnitHostMaterId(int materId, int supId) throws GenericException;

	public void deleteMaterUnitAuxiliaryMaterId(int materId, int supId) throws GenericException;

	public void recoverMater(int materId, int materLevel, int supId) throws GenericException;

	public MaterLevelPo copyMaterForSup(int materId, int level, int supId, int supIdCopy) throws GenericException;

	public void backupMater() throws GenericException;

	/**
	 * 得到菜品對象
	 */
	public MaterVo getMaterVo(String c) throws GenericException;

	public MaterPo getMaterPo(int materId) throws GenericException;

	public MaterPo getMaterPo(String barcode) throws GenericException;

	public MaterVo getMaterLevelVo(String materId, String supId, String materLevel) throws GenericException;

	public MaterTypePo getMaterTypePo(MaterTypeVo vo) throws GenericException;

	/**
	 * 得到材料价格
	 * */
	public BigDecimal getMaterLevelValue(int materId) throws GenericException;

	public List<Object[]> getAllExcelMater() throws GenericException;

	public List<Object[]> getAllExcelMaterCust(long userId) throws GenericException;

	public MaterValueVo getMaterValueVo(MaterValueVo materValueVo) throws GenericException;

	public MaterValueVo getMaterValueVoCost(MaterValueVo materValueVo) throws GenericException;

	public BigDecimal getMaterValueCostLast(int materId, long supId) throws GenericException;

	public void converterSpell() throws GenericException;

	public String getAllMaterTypeJsonString(int space) throws GenericException;

	public List<ShoppingCartMaterPo> getShoppingCartMaterPo(long shopId) throws GenericException;

	public String pulldownMaterTypeParentForSup(String space, long supId) throws GenericException;

}
